EN FR
EN FR


Section: Scientific Foundations

An Ambiant Software Stack

Amazones focuses on three goals: designing new software architectures for ambient environments, designing new approaches to the problem of managing these architectures, in particular using formal methods techniques, and finally designing new toolboxes and techniques for observation and control of the system at runtime.

We use a reference operating system stack as a confluence for our research directions. It will allow us to identify and study transversal topics so as to improve operating systems that cope with the specific constraints of both hardware and software for ambient applications.

We design and build this stack ourselves, and it is divided into three layers:

  1. a hardware management layer,

  2. a portable code layer,

  3. a dynamic services layer.

A substantial set of existing approaches, frameworks and tools can be combined to fulfill each level requirements. Without loss of generality, we chose to leverage L4  [43] and the Genode  [37] infrastructure at the microkernel management layer, JamVM  [42] at the portable code layer, and Apache Felix / ROCS  [25] at the dynamic services layer.

Figure 1. Amazones Interactions
IMG/amazonesInteraction.jpg

The stack is initially used to demonstrate testbeds and transversal demonstrators, but will also serve as a reference model for works. We plan to optimize the stack to obtain at least an adequate operating system for Amazones studies. Nevertheless, our ambition goes beyond “just” assembling those pieces together. Our aim, is indeed to blur the limits between each of the three aforementioned layers, so as to see it as a coherent dynamic operating system rather than yet another proof-of-concept software stack tailored for our very own needs. Merging the middle-layers enables us to reuse standard services such as the registries and the resource allocators and minimizing their number. Merging layers will also need to rely on the same programming paradigms, such as component, service, binding and registries and will lead to a more homogeneous, easier to manipulate operating system. It will be comparable to an OSGi framework since we maintain the same high-level API, and we will be targeted to ARM-like based equipments.